D) numeric_limits.hpp

template <class T>class numeric_limits;
template <> class numeric_limits<bool>;
template <> class numeric_limits<char>;
template <> class numeric_limits<signed char>;
template <> class numeric_limits<unsigned char>;
template <> class numeric_limits<wchar_t>; // wide character(gcc 4byte)
template <> class numeric_limits<char8_t>; // utf-8(8 bit wide char)
template <> class numeric_limits<char16_t>; // 16bit wide char
template <> class numeric_limits<char32_t>; // 32bit wide char
template <> class numeric_limits<short>;
template <> class numeric_limits<unsigned short>;
template <> class numeric_limits<int>;
template <> class numeric_limits<unsigned int>;
template <> class numeric_limits<long>;
template <> class numeric_limits<unsigned long>;
template <> class numeric_limits<long long>;
template <> class numeric_limits<unsigned long long>;
template <> class numeric_limits<float>;
template <> class numeric_limits<double>;
template <> class numeric_limits<long double>;
class member functions
- min        // int는 표현할 수 있는 최솟값, 부동소수점 타입은 0보다 큰 최솟값을 반환
- lowest        // 모든 기본 타입의 가장 작은 값
- max
- epsilon        // 1.0과 가장 가까운 값의 차이(수 간격); 최소정밀도(Unit of Less Precision, ULP)
- round_error        // 최대 반올림 오차
- infinity
- quiet_NaN
- signaling_NaN
- denorm_min        // 0보다 큰 가장 작은 수

 지수 표현법(IEEE 754)
exp의 비트가 모두 0인 경우, Denormalized 영역(Normalized와 다르게 표현된다.)
E=1-bias(exp8비트일 때, bias=127)
M=1.(frac)

exp의 비트가 모두 1인 경우, Special Value를 위한 예약된 수이다.
exp가 모두 1이고, frac이 모두 0인 경우 sign에 따라 +, - 무한대를 의미
exp가 모두 1이고, frac이 모두 0이 아닌 경우, NaN(Not-A-Number)를 표현